﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using EC18_ESHOP.Models;
using Newtonsoft.Json;
using System.Data.Entity;
using System.Data.Entity.Validation;
using System.Data.Entity.Infrastructure;

namespace EC18_ESHOP.Areas.Admin.Controllers
{
    [AdminAuthorize]
    public class AdminWebConfigController : Controller
    {
        //tạo 1 Entity Container để truy cập CSDL
        EShopEntities db = new EShopEntities();

        
        // GET: /Admin/AdminWebConfig/
        public ActionResult Index()
        {
            //lấy tham số đường dẫn hình ảnh dưới CSDL
            PARAMETER para = db.PARAMETER.Where(p => p.ParameterName == "logourl").FirstOrDefault();
            //gán vào biến ViewBag để đưa qua view hiển thị
            ViewBag.getLogoUrl = (para != null) ? para.Value : "";
            return View();
        }


        
        [HttpPost]//nhận các tham số từ form theo phương thức post
        public ActionResult ChangeInfo(string txtEmail, string editorThongTinCongTy)
        {
            //tạo biến để lưu cấu trúc thông tin công ty và gán các thông tin
            var data = new CompanyInfo() { Email = txtEmail, Info = editorThongTinCongTy };
            //chuyển đối tượng thành dạng chuỗi json
            string json = JsonConvert.SerializeObject(data, Formatting.Indented);
            //tìm thư mục App_Data và tạo tên file info.json
            string path = Server.MapPath("~/App_Data/info.json");
            //ghi chuỗi json xuống file
            System.IO.File.WriteAllText(path, json);
            //quay lại trang chỉnh sửa cấu hình
            return RedirectToAction("Index");
        }

        //hàm đọc file json và trả về kiểu json
        [AllowAnonymous]
        public ActionResult GetInfo()
        {
            string path = Server.MapPath("~/App_Data/info.json");
            string json = System.IO.File.ReadAllText(path);
            //chuyển chuỗi json thành đối tượng
            var data = JsonConvert.DeserializeObject<CompanyInfo>(json);
            //chuyển đối tượng thành kiểu json và response cho request
            return Json(data, JsonRequestBehavior.AllowGet);
        }


        [HttpPost]
        public ActionResult ChangeIntro(string editorGioiThieu)
        {
            var data = new CompanyIntro() { Intro = editorGioiThieu };
            string json = JsonConvert.SerializeObject(data, Formatting.Indented);
            string path = Server.MapPath("~/App_Data/intro.json");
            System.IO.File.WriteAllText(path, json);
            return RedirectToAction("Index");
        }

        [AllowAnonymous]
        public ActionResult GetIntro()
        {
            string path = Server.MapPath("~/App_Data/intro.json");
            string json = System.IO.File.ReadAllText(path);
            var data = JsonConvert.DeserializeObject<CompanyIntro>(json);
            return Json(data, JsonRequestBehavior.AllowGet);
        }

        //
        // POST: /Admin/AdminWebConfig/Edit/5

        [HttpPost]//hàm có sử dụng kiểu upload file từ form
        public ActionResult ChangeInterface(HttpPostedFileBase inputlogo, string inputcolor)
        {
            try
            {

                //nếu file khác null
                if (inputlogo != null && inputlogo.ContentLength > 0)
                {
                    //lưu file xuống đường dẫn /Content/logo
                    var fileName = System.IO.Path.GetFileName(inputlogo.FileName);
                    var path = System.IO.Path.Combine(Server.MapPath("~/Content/logo"), fileName);
                    inputlogo.SaveAs(path);

                    //lấy tham số đường dẫn hình ảnh dưới CSDL
                    PARAMETER para = db.PARAMETER.Where(p => p.ParameterName == "logourl").FirstOrDefault();
                    if (para != null)//kiem tra khac null hay ko
                    {
                        //thay đổi đường dẫn đến file vừa lưu
                        para.Value = "/Content/logo/" + fileName;
                    }
                }

                //lấy tham số mã màu dưới CSDL
                PARAMETER para2 = db.PARAMETER.Where(p => p.ParameterName == "colorcode").FirstOrDefault();
                if (para2 != null)
                {
                    //thay đổi mã màu
                    para2.Value = inputcolor;
                    //cập nhật thay đổi xuống CSDL
                    db.SaveChanges();
                }
                return RedirectToAction("Index");
            }
            catch
            {
                return RedirectToAction("Index");
            }
        }

        [AllowAnonymous]
        public ActionResult GetInterface()
        {
            //lấy logo
            PARAMETER para = db.PARAMETER.Where(p => p.ParameterName == "logourl").FirstOrDefault();
            string logo = (para != null) ? para.Value : "";

            //lấy background color
            para = db.PARAMETER.Where(p => p.ParameterName == "colorcode").FirstOrDefault();
            string color = (para != null) ? para.Value : "";
            
            var json = new { logourl = logo, bgcolor = color };
            return Json(json, JsonRequestBehavior.AllowGet);
        }

        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }
    }

    public class CompanyInfo
    {
        public string Email { get; set; }
        public string Info { get; set; }
    }

    public class CompanyIntro
    {
        public string Intro { get; set; }
    }
}
